{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_tra = pd.DataFrame(np.loadtxt(\"data\\\\zhengqi_train.txt\", skiprows=1))\n",
    "data_tes = pd.DataFrame(np.loadtxt(\"data\\\\zhengqi_test.txt\", skiprows=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>29</th>\n",
       "      <th>30</th>\n",
       "      <th>31</th>\n",
       "      <th>32</th>\n",
       "      <th>33</th>\n",
       "      <th>34</th>\n",
       "      <th>35</th>\n",
       "      <th>36</th>\n",
       "      <th>37</th>\n",
       "      <th>38</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "      <td>2888.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.123048</td>\n",
       "      <td>0.056068</td>\n",
       "      <td>0.289720</td>\n",
       "      <td>-0.067790</td>\n",
       "      <td>0.012921</td>\n",
       "      <td>-0.558565</td>\n",
       "      <td>0.182892</td>\n",
       "      <td>0.116155</td>\n",
       "      <td>0.177856</td>\n",
       "      <td>-0.169452</td>\n",
       "      <td>...</td>\n",
       "      <td>0.097648</td>\n",
       "      <td>0.055477</td>\n",
       "      <td>0.127791</td>\n",
       "      <td>0.020806</td>\n",
       "      <td>0.007801</td>\n",
       "      <td>0.006715</td>\n",
       "      <td>0.197764</td>\n",
       "      <td>0.030658</td>\n",
       "      <td>-0.130330</td>\n",
       "      <td>0.126353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.928031</td>\n",
       "      <td>0.941515</td>\n",
       "      <td>0.911236</td>\n",
       "      <td>0.970298</td>\n",
       "      <td>0.888377</td>\n",
       "      <td>0.517957</td>\n",
       "      <td>0.918054</td>\n",
       "      <td>0.955116</td>\n",
       "      <td>0.895444</td>\n",
       "      <td>0.953813</td>\n",
       "      <td>...</td>\n",
       "      <td>1.061200</td>\n",
       "      <td>0.901934</td>\n",
       "      <td>0.873028</td>\n",
       "      <td>0.902584</td>\n",
       "      <td>1.006995</td>\n",
       "      <td>1.003291</td>\n",
       "      <td>0.985675</td>\n",
       "      <td>0.970812</td>\n",
       "      <td>1.017196</td>\n",
       "      <td>0.983966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-4.335000</td>\n",
       "      <td>-5.122000</td>\n",
       "      <td>-3.420000</td>\n",
       "      <td>-3.956000</td>\n",
       "      <td>-4.742000</td>\n",
       "      <td>-2.182000</td>\n",
       "      <td>-4.576000</td>\n",
       "      <td>-5.048000</td>\n",
       "      <td>-4.692000</td>\n",
       "      <td>-12.891000</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.912000</td>\n",
       "      <td>-4.507000</td>\n",
       "      <td>-5.859000</td>\n",
       "      <td>-4.053000</td>\n",
       "      <td>-4.627000</td>\n",
       "      <td>-4.789000</td>\n",
       "      <td>-5.695000</td>\n",
       "      <td>-2.608000</td>\n",
       "      <td>-3.630000</td>\n",
       "      <td>-3.044000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.297000</td>\n",
       "      <td>-0.226250</td>\n",
       "      <td>-0.313000</td>\n",
       "      <td>-0.652250</td>\n",
       "      <td>-0.385000</td>\n",
       "      <td>-0.853000</td>\n",
       "      <td>-0.310000</td>\n",
       "      <td>-0.295000</td>\n",
       "      <td>-0.159000</td>\n",
       "      <td>-0.390000</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.664000</td>\n",
       "      <td>-0.283000</td>\n",
       "      <td>-0.170250</td>\n",
       "      <td>-0.407250</td>\n",
       "      <td>-0.499000</td>\n",
       "      <td>-0.290000</td>\n",
       "      <td>-0.202500</td>\n",
       "      <td>-0.413000</td>\n",
       "      <td>-0.798250</td>\n",
       "      <td>-0.350250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.359000</td>\n",
       "      <td>0.272500</td>\n",
       "      <td>0.386000</td>\n",
       "      <td>-0.044500</td>\n",
       "      <td>0.110000</td>\n",
       "      <td>-0.466000</td>\n",
       "      <td>0.388000</td>\n",
       "      <td>0.344000</td>\n",
       "      <td>0.362000</td>\n",
       "      <td>0.042000</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.023000</td>\n",
       "      <td>0.053500</td>\n",
       "      <td>0.299500</td>\n",
       "      <td>0.039000</td>\n",
       "      <td>-0.040000</td>\n",
       "      <td>0.160000</td>\n",
       "      <td>0.364000</td>\n",
       "      <td>0.137000</td>\n",
       "      <td>-0.185500</td>\n",
       "      <td>0.313000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.726000</td>\n",
       "      <td>0.599000</td>\n",
       "      <td>0.918250</td>\n",
       "      <td>0.624000</td>\n",
       "      <td>0.550250</td>\n",
       "      <td>-0.154000</td>\n",
       "      <td>0.831250</td>\n",
       "      <td>0.782250</td>\n",
       "      <td>0.726000</td>\n",
       "      <td>0.042000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.745250</td>\n",
       "      <td>0.488000</td>\n",
       "      <td>0.635000</td>\n",
       "      <td>0.557000</td>\n",
       "      <td>0.462000</td>\n",
       "      <td>0.273000</td>\n",
       "      <td>0.602000</td>\n",
       "      <td>0.644250</td>\n",
       "      <td>0.495250</td>\n",
       "      <td>0.793250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.121000</td>\n",
       "      <td>1.918000</td>\n",
       "      <td>2.828000</td>\n",
       "      <td>2.457000</td>\n",
       "      <td>2.689000</td>\n",
       "      <td>0.489000</td>\n",
       "      <td>1.895000</td>\n",
       "      <td>1.918000</td>\n",
       "      <td>2.245000</td>\n",
       "      <td>1.335000</td>\n",
       "      <td>...</td>\n",
       "      <td>4.580000</td>\n",
       "      <td>2.689000</td>\n",
       "      <td>2.013000</td>\n",
       "      <td>2.395000</td>\n",
       "      <td>5.465000</td>\n",
       "      <td>5.110000</td>\n",
       "      <td>2.324000</td>\n",
       "      <td>5.238000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.538000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 39 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                0            1            2            3            4   \\\n",
       "count  2888.000000  2888.000000  2888.000000  2888.000000  2888.000000   \n",
       "mean      0.123048     0.056068     0.289720    -0.067790     0.012921   \n",
       "std       0.928031     0.941515     0.911236     0.970298     0.888377   \n",
       "min      -4.335000    -5.122000    -3.420000    -3.956000    -4.742000   \n",
       "25%      -0.297000    -0.226250    -0.313000    -0.652250    -0.385000   \n",
       "50%       0.359000     0.272500     0.386000    -0.044500     0.110000   \n",
       "75%       0.726000     0.599000     0.918250     0.624000     0.550250   \n",
       "max       2.121000     1.918000     2.828000     2.457000     2.689000   \n",
       "\n",
       "                5            6            7            8            9   \\\n",
       "count  2888.000000  2888.000000  2888.000000  2888.000000  2888.000000   \n",
       "mean     -0.558565     0.182892     0.116155     0.177856    -0.169452   \n",
       "std       0.517957     0.918054     0.955116     0.895444     0.953813   \n",
       "min      -2.182000    -4.576000    -5.048000    -4.692000   -12.891000   \n",
       "25%      -0.853000    -0.310000    -0.295000    -0.159000    -0.390000   \n",
       "50%      -0.466000     0.388000     0.344000     0.362000     0.042000   \n",
       "75%      -0.154000     0.831250     0.782250     0.726000     0.042000   \n",
       "max       0.489000     1.895000     1.918000     2.245000     1.335000   \n",
       "\n",
       "          ...                29           30           31           32  \\\n",
       "count     ...       2888.000000  2888.000000  2888.000000  2888.000000   \n",
       "mean      ...          0.097648     0.055477     0.127791     0.020806   \n",
       "std       ...          1.061200     0.901934     0.873028     0.902584   \n",
       "min       ...         -2.912000    -4.507000    -5.859000    -4.053000   \n",
       "25%       ...         -0.664000    -0.283000    -0.170250    -0.407250   \n",
       "50%       ...         -0.023000     0.053500     0.299500     0.039000   \n",
       "75%       ...          0.745250     0.488000     0.635000     0.557000   \n",
       "max       ...          4.580000     2.689000     2.013000     2.395000   \n",
       "\n",
       "                33           34           35           36           37  \\\n",
       "count  2888.000000  2888.000000  2888.000000  2888.000000  2888.000000   \n",
       "mean      0.007801     0.006715     0.197764     0.030658    -0.130330   \n",
       "std       1.006995     1.003291     0.985675     0.970812     1.017196   \n",
       "min      -4.627000    -4.789000    -5.695000    -2.608000    -3.630000   \n",
       "25%      -0.499000    -0.290000    -0.202500    -0.413000    -0.798250   \n",
       "50%      -0.040000     0.160000     0.364000     0.137000    -0.185500   \n",
       "75%       0.462000     0.273000     0.602000     0.644250     0.495250   \n",
       "max       5.465000     5.110000     2.324000     5.238000     3.000000   \n",
       "\n",
       "                38  \n",
       "count  2888.000000  \n",
       "mean      0.126353  \n",
       "std       0.983966  \n",
       "min      -3.044000  \n",
       "25%      -0.350250  \n",
       "50%       0.313000  \n",
       "75%       0.793250  \n",
       "max       2.538000  \n",
       "\n",
       "[8 rows x 39 columns]"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_tra.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>28</th>\n",
       "      <th>29</th>\n",
       "      <th>30</th>\n",
       "      <th>31</th>\n",
       "      <th>32</th>\n",
       "      <th>33</th>\n",
       "      <th>34</th>\n",
       "      <th>35</th>\n",
       "      <th>36</th>\n",
       "      <th>37</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "      <td>1925.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>-0.184404</td>\n",
       "      <td>-0.083912</td>\n",
       "      <td>-0.434762</td>\n",
       "      <td>0.101671</td>\n",
       "      <td>-0.019172</td>\n",
       "      <td>0.838049</td>\n",
       "      <td>-0.274092</td>\n",
       "      <td>-0.173971</td>\n",
       "      <td>-0.266709</td>\n",
       "      <td>0.255114</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.206871</td>\n",
       "      <td>-0.146463</td>\n",
       "      <td>-0.083215</td>\n",
       "      <td>-0.191729</td>\n",
       "      <td>-0.030782</td>\n",
       "      <td>-0.011433</td>\n",
       "      <td>-0.009985</td>\n",
       "      <td>-0.296895</td>\n",
       "      <td>-0.046270</td>\n",
       "      <td>0.195735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.073333</td>\n",
       "      <td>1.076670</td>\n",
       "      <td>0.969541</td>\n",
       "      <td>1.034925</td>\n",
       "      <td>1.147286</td>\n",
       "      <td>0.963043</td>\n",
       "      <td>1.054119</td>\n",
       "      <td>1.040101</td>\n",
       "      <td>1.085916</td>\n",
       "      <td>1.014394</td>\n",
       "      <td>...</td>\n",
       "      <td>1.064140</td>\n",
       "      <td>0.880593</td>\n",
       "      <td>1.126414</td>\n",
       "      <td>1.138454</td>\n",
       "      <td>1.130228</td>\n",
       "      <td>0.989732</td>\n",
       "      <td>0.995213</td>\n",
       "      <td>0.946896</td>\n",
       "      <td>1.040854</td>\n",
       "      <td>0.940599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-4.814000</td>\n",
       "      <td>-5.488000</td>\n",
       "      <td>-4.283000</td>\n",
       "      <td>-3.276000</td>\n",
       "      <td>-4.921000</td>\n",
       "      <td>-1.168000</td>\n",
       "      <td>-5.649000</td>\n",
       "      <td>-5.625000</td>\n",
       "      <td>-6.059000</td>\n",
       "      <td>-6.784000</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.435000</td>\n",
       "      <td>-2.413000</td>\n",
       "      <td>-4.507000</td>\n",
       "      <td>-7.698000</td>\n",
       "      <td>-4.057000</td>\n",
       "      <td>-4.627000</td>\n",
       "      <td>-4.789000</td>\n",
       "      <td>-7.477000</td>\n",
       "      <td>-2.608000</td>\n",
       "      <td>-3.346000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.664000</td>\n",
       "      <td>-0.451000</td>\n",
       "      <td>-0.978000</td>\n",
       "      <td>-0.644000</td>\n",
       "      <td>-0.497000</td>\n",
       "      <td>0.122000</td>\n",
       "      <td>-0.732000</td>\n",
       "      <td>-0.509000</td>\n",
       "      <td>-0.775000</td>\n",
       "      <td>-0.390000</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.453000</td>\n",
       "      <td>-0.818000</td>\n",
       "      <td>-0.339000</td>\n",
       "      <td>-0.476000</td>\n",
       "      <td>-0.472000</td>\n",
       "      <td>-0.460000</td>\n",
       "      <td>-0.290000</td>\n",
       "      <td>-0.349000</td>\n",
       "      <td>-0.593000</td>\n",
       "      <td>-0.432000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.065000</td>\n",
       "      <td>0.195000</td>\n",
       "      <td>-0.267000</td>\n",
       "      <td>0.220000</td>\n",
       "      <td>0.118000</td>\n",
       "      <td>0.437000</td>\n",
       "      <td>-0.082000</td>\n",
       "      <td>0.018000</td>\n",
       "      <td>-0.004000</td>\n",
       "      <td>0.401000</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.445000</td>\n",
       "      <td>-0.199000</td>\n",
       "      <td>0.010000</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.155000</td>\n",
       "      <td>-0.040000</td>\n",
       "      <td>0.160000</td>\n",
       "      <td>-0.270000</td>\n",
       "      <td>0.083000</td>\n",
       "      <td>0.152000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.549000</td>\n",
       "      <td>0.589000</td>\n",
       "      <td>0.278000</td>\n",
       "      <td>0.793000</td>\n",
       "      <td>0.610000</td>\n",
       "      <td>1.928000</td>\n",
       "      <td>0.457000</td>\n",
       "      <td>0.515000</td>\n",
       "      <td>0.482000</td>\n",
       "      <td>0.904000</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.434000</td>\n",
       "      <td>0.468000</td>\n",
       "      <td>0.447000</td>\n",
       "      <td>0.471000</td>\n",
       "      <td>0.627000</td>\n",
       "      <td>0.419000</td>\n",
       "      <td>0.273000</td>\n",
       "      <td>0.364000</td>\n",
       "      <td>0.651000</td>\n",
       "      <td>0.797000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.100000</td>\n",
       "      <td>2.120000</td>\n",
       "      <td>1.946000</td>\n",
       "      <td>2.603000</td>\n",
       "      <td>4.475000</td>\n",
       "      <td>3.176000</td>\n",
       "      <td>1.528000</td>\n",
       "      <td>1.394000</td>\n",
       "      <td>2.408000</td>\n",
       "      <td>1.766000</td>\n",
       "      <td>...</td>\n",
       "      <td>4.656000</td>\n",
       "      <td>3.022000</td>\n",
       "      <td>3.139000</td>\n",
       "      <td>1.428000</td>\n",
       "      <td>2.299000</td>\n",
       "      <td>5.465000</td>\n",
       "      <td>5.110000</td>\n",
       "      <td>1.671000</td>\n",
       "      <td>2.861000</td>\n",
       "      <td>3.021000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                0            1            2            3            4   \\\n",
       "count  1925.000000  1925.000000  1925.000000  1925.000000  1925.000000   \n",
       "mean     -0.184404    -0.083912    -0.434762     0.101671    -0.019172   \n",
       "std       1.073333     1.076670     0.969541     1.034925     1.147286   \n",
       "min      -4.814000    -5.488000    -4.283000    -3.276000    -4.921000   \n",
       "25%      -0.664000    -0.451000    -0.978000    -0.644000    -0.497000   \n",
       "50%       0.065000     0.195000    -0.267000     0.220000     0.118000   \n",
       "75%       0.549000     0.589000     0.278000     0.793000     0.610000   \n",
       "max       2.100000     2.120000     1.946000     2.603000     4.475000   \n",
       "\n",
       "                5            6            7            8            9   \\\n",
       "count  1925.000000  1925.000000  1925.000000  1925.000000  1925.000000   \n",
       "mean      0.838049    -0.274092    -0.173971    -0.266709     0.255114   \n",
       "std       0.963043     1.054119     1.040101     1.085916     1.014394   \n",
       "min      -1.168000    -5.649000    -5.625000    -6.059000    -6.784000   \n",
       "25%       0.122000    -0.732000    -0.509000    -0.775000    -0.390000   \n",
       "50%       0.437000    -0.082000     0.018000    -0.004000     0.401000   \n",
       "75%       1.928000     0.457000     0.515000     0.482000     0.904000   \n",
       "max       3.176000     1.528000     1.394000     2.408000     1.766000   \n",
       "\n",
       "          ...                28           29           30           31  \\\n",
       "count     ...       1925.000000  1925.000000  1925.000000  1925.000000   \n",
       "mean      ...         -0.206871    -0.146463    -0.083215    -0.191729   \n",
       "std       ...          1.064140     0.880593     1.126414     1.138454   \n",
       "min       ...         -2.435000    -2.413000    -4.507000    -7.698000   \n",
       "25%       ...         -0.453000    -0.818000    -0.339000    -0.476000   \n",
       "50%       ...         -0.445000    -0.199000     0.010000     0.100000   \n",
       "75%       ...         -0.434000     0.468000     0.447000     0.471000   \n",
       "max       ...          4.656000     3.022000     3.139000     1.428000   \n",
       "\n",
       "                32           33           34           35           36  \\\n",
       "count  1925.000000  1925.000000  1925.000000  1925.000000  1925.000000   \n",
       "mean     -0.030782    -0.011433    -0.009985    -0.296895    -0.046270   \n",
       "std       1.130228     0.989732     0.995213     0.946896     1.040854   \n",
       "min      -4.057000    -4.627000    -4.789000    -7.477000    -2.608000   \n",
       "25%      -0.472000    -0.460000    -0.290000    -0.349000    -0.593000   \n",
       "50%       0.155000    -0.040000     0.160000    -0.270000     0.083000   \n",
       "75%       0.627000     0.419000     0.273000     0.364000     0.651000   \n",
       "max       2.299000     5.465000     5.110000     1.671000     2.861000   \n",
       "\n",
       "                37  \n",
       "count  1925.000000  \n",
       "mean      0.195735  \n",
       "std       0.940599  \n",
       "min      -3.346000  \n",
       "25%      -0.432000  \n",
       "50%       0.152000  \n",
       "75%       0.797000  \n",
       "max       3.021000  \n",
       "\n",
       "[8 rows x 38 columns]"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_tes.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [],
   "source": [
    "Y = data_tra.values[:,-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import preprocessing\n",
    "data_tra_pre = preprocessing.scale(data_tra.values[:,:-1])\n",
    "data_tes_pre = preprocessing.scale(data_tes.values[:,:-1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 划分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = data_tra_pre[:,:-1]\n",
    "y_train = Y\n",
    "x_test = data_tes_pre"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.model_selection import cross_val_score\n",
    "\n",
    "test_scores = []\n",
    "params = np.logspace(-3,2,50)\n",
    "for param in params:\n",
    "    model = Ridge(param)\n",
    "    test_score = np.sqrt(-cross_val_score(model,x_train,y_train,cv=10,scoring=\"neg_mean_squared_error\"))\n",
    "    test_scores.append(np.mean(test_score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x22e0c182898>]"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAD8CAYAAABpcuN4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmYFNXZ/vHvwwACA7KD7JtEZJFt2ESNr9E3IEZAjYISUVREIWqMiejPN1ETsxijJko0KAgaFQ0SJS4xxrihgsywCAMiqzKAMOzbDLM9vz+6RluWmQYGqpf7c11c03W6qvo5Vw19T50+VW3ujoiIyKFUCrsAERGJbwoKEREpk4JCRETKpKAQEZEyKShERKRMCgoRESmTgkJERMqkoBARkTIpKEREpEyVwy6gIjRo0MBbt24ddhkiIgklKytrs7s3LG+9pAiK1q1bk5mZGXYZIiIJxcy+iGU9DT2JiEiZFBQiIlImBYWIiJRJQSEiImVSUIiISJkUFCIiUiYFhYiIlElBISKSgPYWFHH3zGx25BUe89dSUIiIJJi9BUWMmjKXpz9eQ9YXW4/56ykoREQSSGlIfLJ6Kw9d1o1zOjQ+5q+poBARSRB7C4q4Zkrm1yExuFuz4/K6CgoRkQSQV1DMNVMymbN6Cw9eevxCAhQUIiJxL6+gmFFT5n4dEkO6H7+QAAWFiEhciw6JP17a9biHBCgoRETiVl5BMddM/SYkhnZvHkodSfF9FCIiyaY0JD5etYUHQwwJ0BmFiEjcySso5tqn4yMkQEEhIhJXSkPio5Vb+OMPww8JUFCIiMSNvIJirns6k49WbuGBS7pyUY/wQwIUFCIicSG/MBISH67czAOXdOXinvEREqCgEBEJXX5hMddOjYTEH+IsJEBBISISqv1D4pI4CwmIMSjMbICZLTOzFWY2/iDPjzGzRWa2wMxmmVnH/Z5vaWa7zey2qLbJZrbJzBbvt249M3vLzJYHP+seaedEROJZ9HDT/RefFpchATEEhZmlAROAgUBHYPj+QQA85+5d3L0bcD/w4H7PPwS8sV/bFGDAQV5yPPC2u7cH3g6WRUSSSmlIzFoRCYkfZrQIu6RDiuWMojewwt1XuXsBMA0YHL2Cu++MWkwHvHTBzIYAq4Ds/bZ5HzjYjdQHA1ODx1OBITHUKCKSMKJD4vdxHhIQW1A0A9ZGLecEbd9iZmPNbCWRM4qbgrZ04HbgnsOoqbG7bwAIfjY6jG1FROLa/iFxaZyHBMQWFHaQNj+gwX2Cu7cjEgx3Bc33AA+5++4jL/EQRZmNNrNMM8vMzc2t6N2LiFS4/MJiRj+TFQmJixIjJCC2ez3lANG9aQ6sL2P9acBjweM+wCVmdj9QBygxs3x3f7SM7TeaWRN332BmTYBNB1vJ3ScCEwEyMjIOCC4RkXhSGhIfLM+NhESvxAgJiO2MYi7Q3szamFlVYBgwM3oFM2sftTgIWA7g7me6e2t3bw08DPymnJAg2PfI4PFI4JUYahQRiVuJHBIQQ1C4exEwDngTWAq86O7ZZnavmV0YrDbOzLLNbAFwK9+80R+SmT0PfAycYmY5ZnZN8NTvgPPMbDlwXrAsIpKQSkPi/c8TMyQAzD3xR20yMjI8MzMz7DJERL4lv7CY65/J4r3Pc/n9xV24rFfLsEv6FjPLcveM8tbTldkiIsdAvIfE4VBQiIhUsPzCYsb8LRISv7sosUMCFBQiIhWqNCTeXRYJiWG9EzskQEEhIlJh8guLuSEIid8mSUiAgkJEpELsK4qExDtBSAxPkpAABYWIyFHbV1TMmGciIfGbockVEqCgEBE5KvuHxOV9kiskQEEhInLEIsNN83hnWS73De2clCEBCgoRkSNSGhL//WwT9w3tzBV9WoVd0jGjoBAROUz7ioq5MQiJXw9J7pAABYWIyGEpDYm3g5AY0Te5QwIUFCIiMdtXVMzYZyMh8asUCQlQUIiIxKQ0JP6zNBISP0qRkAAFhYhIuQqKSr4JicGdUiokQEEhIlKmgqISbnw265uQ6Nc67JKOOwWFiMghREIiciZxb4qGBCgoREQO6puQ2Mi9gztxZYqGBCgoREQOUFBUwtjnFBKlFBQiIlFKQ+KtJQqJUgoKEZFAQVEJ44KQuOdChUQpBYWICN+ExL+DkBh5euuwS4obCgoRSXkFRSX8+PlISNz9g44Kif0oKEQkpRUWR0LizexISFzVv03YJcUdBYWIpKzC4shw05vZG/mlQuKQFBQikpL2D4mrFRKHFFNQmNkAM1tmZivMbPxBnh9jZovMbIGZzTKzjvs939LMdpvZbeXt08ymmNnqYF8LzKzb0XRQRGR/hcUl/Pi5+byZvZFfXKCQKE+5QWFmacAEYCDQERi+fxAAz7l7F3fvBtwPPLjf8w8BbxzGPn/m7t2CfwsOt1MiIodSGhL/yv6KX1zQkVFnKCTKE8sZRW9ghbuvcvcCYBowOHoFd98ZtZgOeOmCmQ0BVgHZh7NPEZGKVlhcwk3PR0Li/xQSMYslKJoBa6OWc4K2bzGzsWa2ksgZxU1BWzpwO3DPYe7zPjP71MweMrMTDlaUmY02s0wzy8zNzY2hGyKSykpD4o3FX3HXoFO5RiERs1iCwg7S5gc0uE9w93ZEguGuoPke4CF3330Y+7wD6AD0AuoF+ztwZfeJ7p7h7hkNGzYsvxcikrIKi0u4edo3IXHtmW3DLimhVI5hnRygRdRyc2B9GetPAx4LHvcBLjGz+4E6QImZ5QNZh9qnu28I2vaZ2VPAbYiIHKHSkHh9kULiSMUSFHOB9mbWBlgHDAMuj17BzNq7+/JgcRCwHMDdz4xa525gt7s/amaVD7VPM2vi7hvMzIAhwOKj6J+IpLDC4hJumbZAIXGUyg0Kdy8ys3HAm0AaMNnds83sXiDT3WcC48zsXKAQ2AaMPJJ9Bk8/a2YNiQxPLQDGHGHfRCSFlYbEa4s28P/OV0gcDXM/4OOGhJORkeGZmZlhlyEicaKouISbo0LiurMUEgdjZlnunlHeeroyW0SSSnRI3Hl+B4VEBVBQiEjSKCou4eYXvgmJ0We1C7ukpKCgEJGk8HVIfLqBOwYqJCqSgkJEEl5RcQm3RIXE9d9VSFQkBYWIJLTSkHj10w2MV0gcEwoKEUlYRcUl/OTFhV+HxBiFxDGhoBCRhFQaEv9cuJ7bBygkjqVYrswWEYkr0bfluH1AB244WyFxLCkoRCSh7CsqZtxz83lryUbdluM4UVCISMLILyzmxmfn8d/PNnHPhZ0YeXrrsEtKCQoKEUkIeQXFjH4mkw+Wb+a+oZ25ok+rsEtKGQoKEYl7ewuKuGZKJrNXb+H+i0/j0l4tyt9IKoyCQkTi2u59RYx6ai6ZX2zlwUu7MrR787BLSjkKChGJWzvzC7lq8icszNnBw8O6c2HXpmGXlJIUFCISl3bsLeTKyXPIXr+TR4d3Z2CXJmGXlLIUFCISd7btKWDEpDks37ibx0f05NyOjcMuKaUpKEQkrmzevY8RT85h1eY9/PXKnvzPKY3CLinlKShEJG5s2pXPFU/MYe22vUwe2Ysz2jcIuyRBQSEiceKrHflc/sRsvtqZz1NX9aZfu/phlyQBBYWIhG7d9jwuf2I2m3ftY+qo3vRqXS/skiSKgkJEQrV2616GPzGbHXsLeebaPvRoWTfskmQ/CgoRCc2azXu4/InZ7N5XxLPX9eG05nXCLkkOQkEhIqFYmbuby5+YTUFRCc9d15fOzWqHXZIcgoJCRI675Rt3MfyJOYDz/Oi+dDjpxLBLkjLE9A13ZjbAzJaZ2QozG3+Q58eY2SIzW2Bms8ys437PtzSz3WZ2W3n7NLM2ZjbHzJab2QtmVvVoOigi8WXphp0MmzgbM5imkEgI5QaFmaUBE4CBQEdg+P5BADzn7l3cvRtwP/Dgfs8/BLwR4z5/Dzzk7u2BbcA1h90rEYlLi9ftYPgTs6mSVokXRvfl5Ea1wi5JYhDLGUVvYIW7r3L3AmAaMDh6BXffGbWYDnjpgpkNAVYB2eXt08wMOAeYHqw3FRhyeF0SkXi0cO12Ln9iNulVK/PC9X1p27Bm2CVJjGIJimbA2qjlnKDtW8xsrJmtJHJGcVPQlg7cDtwT4z7rA9vdvais1xKRxJL1xTZGPDmH2jWqMG10X1rVTw+7JDkMsQSFHaTND2hwn+Du7YgEw11B8z1EhpF2x7jPmF4LwMxGm1mmmWXm5uYesngRCdcnq7dy5aQ51K9ZlRdG96NFvRphlySHKZZZTzlA9NdJNQfWl7H+NOCx4HEf4BIzux+oA5SYWT6QdYh9bgbqmFnl4KzikK/l7hOBiQAZGRkHDRMRCddHKzdzzZRMmtSpxvPX9aXxidXCLkmOQCxBMRdob2ZtgHXAMODy6BXMrL27Lw8WBwHLAdz9zKh17gZ2u/ujZlb5YPt0dzezd4BLiATOSOCVo+ifiITk/c9zue7pTFrVr8Gz1/alYa0Twi5JjlC5QeHuRWY2DngTSAMmu3u2md0LZLr7TGCcmZ0LFBKZqTTySPYZPH07MM3Mfg3MByYdYd9EJCTvfLaJ6/+WRdsG6Tx7bR/q11RIJDJzT/xRm4yMDM/MzAy7DBEB/p39FWOfm8cpJ9XimVF9qJuuS6HilZlluXtGeevpymwRqTCvL9rATc/Pp3Oz2kwd1Zva1auEXZJUAAWFiFSIVxas49YXF9KtRR2mXN2LWtUUEslCQSEiR+2lrBx+Nn0hGa3r8dRVvUg/QW8tySSmez2JiBzKC3O/5LbpC+nXrj5TrlZIJCMdURE5Yn+b/QV3vbyYs77TkIk/6km1KmlhlyTHgM4oROSIPPXhau56eTHf69BIIZHkdEYhIoftifdXcd/rS/l+p8Y8MrwHVSvrb85kpqAQkcMy4Z0V/OHNZQw6rQkPX9aNKmkKiWSnoBCRmLg7f3p7OQ//ZzlDujXlgR92pbJCIiUoKESkXO7OA/9exoR3VnJJz+b8/uLTSKt0sJs9SzJSUIhImdyd377xGRPfX8Xw3i24b0gXKikkUoqCQkQOyd25559LmPLRGq7s14q7f9BJIZGCFBQiclAlJc4vZi7mb7O/ZFT/NvzfBacS+bZiSTUKChE5QEmJc8eMRbyQuZbrv9uW8QM6KCRSmIJCRL6luMT52fSFzJi3jh+fczK3nvcdhUSKU1CIyNeKiku49cWFzFy4nlvP+w43fa992CVJHFBQiAgAhcUl3DxtPq8v+orbB3TghrPbhV2SxAkFhYiwr6iYcc/N560lG7lr0Klce2bbsEuSOKKgEElx+YXF3PC3LN5Zlsu9gztxZb/WYZckcUZBIZLC8gqKGf1MJh8s38xvhnbh8j4twy5J4pCCQiRF7S0o4popmcxevYX7LzmNSzNahF2SxCkFhUgK2r2viFFPzSXzi608eGlXhnZvHnZJEscUFCIpZmd+IVdN/oSFOTv407Du/KBr07BLkjinoBBJIRt35jNy8ies2LSbCZd3Z0DnJmGXJAkgppvJm9kAM1tmZivMbPxBnh9jZovMbIGZzTKzjkF776BtgZktNLOhUdvcbGaLzSzbzG6Jar/bzNZFbXd+RXRUJNWtyt3NRX/5iLVb9/LU1b0UEhKzcs8ozCwNmACcB+QAc81sprsviVrtOXd/PFj/QuBBYACwGMhw9yIzawIsNLN/Ah2A64DeQAHwLzN7zd2XB/t7yN0fqJguisiCtdsZNWUuBkwb3Y8uzWuHXZIkkFjOKHoDK9x9lbsXANOAwdEruPvOqMV0wIP2ve5eFLRXK20HTgVmRz3/HjAUEalw7y7bxPCJs0k/IY3pN5yukJDDFktQNAPWRi3nBG3fYmZjzWwlcD9wU1R7HzPLBhYBY4JgWAycZWb1zawGcD4QPTdvnJl9amaTzazuYfdKRACYMS+Ha6dm0qZBOi/dcDptGqSHXZIkoFiC4mC3jfQDGtwnuHs74Hbgrqj2Oe7eCegF3GFm1dx9KfB74C3gX8BCoPTM4zGgHdAN2AD88aBFmY02s0wzy8zNzY2hGyKpZeL7K7n1xYX0blOPF67vS6Na1cIuSRJULEGRw7f/2m8OrC9j/WnAkP0bg3DYA3QOlie5ew93PwvYCiwP2je6e7G7lwBPEBn6OoC7T3T3DHfPaNiwYQzdEEkNJSXOr19dwm9e/4xBpzXhqat7UatalbDLkgQWS1DMBdqbWRszqwoMA2ZGr2Bm0fciHkTwph9sUzl43Ao4BVgTLDcKfrYELgKeD5ajp2IMJTJMJSIxKCgq4dYXF/DkrNWM7NeKR4Z154TKaWGXJQmu3FlPwYylccCbQBow2d2zzexeINPdZxL5TOFcoBDYBowMNj8DGG9mhUAJcKO7bw6ee8nM6gfbjHX3bUH7/WbWjcjw1hrg+oroqEiy27OviDF/y+KD5Zv52fdP4caz2+kLh6RCmPsBHzcknIyMDM/MzAy7DJHQbNm9j1FT5rJ4/U5+O7QLl/bSfZukfGaW5e4Z5a2nK7NFEtzarXu5cvInrN+ex19H9OTcjo3DLkmSjIJCJIFlr9/BVU/NpaCohOeu60PPVvXCLkmSkIJCJEF9vHILo5/OpGa1yjw3ph/tG9cKuyRJUgoKkQT0+qIN3DJtAa3q1+Dpa3rTpHb1sEuSJKagEEkwT3+8hl/OzKZny7o8OTKDOjWqhl2SJDkFhUiCcHcefOtzHvnvCs49tTGPXt6dalV0jYQcewoKkQRQVFzCXS8vZtrctQzr1YJfD+lM5bSYviVA5KgpKETiXH5hMeOem89/lm7kx+eczK3nfUcX0slxpaAQiWPb9xZw7dRMsr7cxr2DO3Flv9ZhlyQpSEEhEqc27Mjjykmf8MWWvTw6vAeDTtM30kk4FBQicWjFpl1cOekTduUXMWVUL05v1yDskiSFKShE4kzWF1sZNSWTqpUrMe36vnRqqm+kk3ApKETiyH+WbGTc8/M46cRqPHNNH1rUqxF2SSIKCpF48WLmWu6YsYhOTU9k8lW9aFDzhLBLEgEUFCKhc3f+8u5K/vDmMs5s34DHR/Qk/QT915T4od9GkRCVlDj3vrqEKR+tYUi3ptx/SVeqVtaFdBJfFBQiIdlXVMytLy7ktU83cO0Zbbjz/FOpVEkX0kn8UVCIhGBXfiHXP5PFRyu3cOf5HRh9VruwSxI5pJQPii2791FfHxrKcbRpVz5XPzWXZV/t4sFLu3JRj+ZhlyRSppQeDL3r5UUMnvAhxSWJ/73hkhjWbN7DxY99xKrcPTw5MkMhIQkhpYOif7sG5GzL4z9LN4ZdiqSARTk7uPixj9izr5jnR/fl7FMahV2SSExSOijO69iYZnWqM3nW6rBLkST3wfJchk38mGpV0pg+ph/dWtQJuySRmKV0UFROq8RVp7dmzuqtLF63I+xyJEm9smAdo6bMpUW9Gsy48XTaNqwZdkkihyWlgwLgst4tqHlCZZ74YFXYpUgSmjRrNTdPW0CPlnV54fp+ND6xWtgliRy2lA+KE6tVYVivFrz66QZytu0NuxxJEu7O7974jF+9uoSBnU9i6qje1K5eJeyyRI5ITEFhZgPMbJmZrTCz8Qd5foyZLTKzBWY2y8w6Bu29g7YFZrbQzIZGbXOzmS02s2wzuyWqvZ6ZvWVmy4OfdSuio2UZdUYbDHjyA31WIUevoKiE2/7+KY+/t5IRfVvy6OU99N3WktDKDQozSwMmAAOBjsDw0iCI8py7d3H3bsD9wINB+2IgI2gfAPzVzCqbWWfgOqA30BW4wMzaB9uMB9529/bA28HyMdW0TnUGd2vGtLlfsmX3vmP9cpLENuzI47KJH/PSvBx+cu53+NXgzqTpamtJcLGcUfQGVrj7KncvAKYBg6NXcPedUYvpgAfte929KGivVtoOnArMjnr+PaD0bGMwMDV4PBUYcnhdOjI3nN2WfUUlTP5QZxVyZD5asZkL/jyLz7/axV+u6MHN57bXd1tLUoglKJoBa6OWc4K2bzGzsWa2ksgZxU1R7X3MLBtYBIwJgmExcJaZ1TezGsD5QItgk8buvgEg+HnQyeZmNtrMMs0sMzc3N4ZulO3kRrUY2Pkknv7oC3bkFR71/iR1RO7+uoIRk+ZQN70qr4w7g/O76GtLJXnEEhQH+5PogEuZ3X2Cu7cDbgfuimqf4+6dgF7AHWZWzd2XAr8H3gL+BSwEivbfZ1ncfaK7Z7h7RsOGDQ9n00Ma+z8ns2tfEVM+XFMh+5PktzO/kNHPZHH/v5ZxfpcmvDK2Pyc30vRXSS6xBEUO3/y1D9AcWF/G+tM4yHBREA57gM7B8iR37+HuZwFbgeXBqhvNrAlA8HNTDDVWiE5Na/O/HRszadYqnVVIuZZu2MmFj8zinc828YsLOvLI8O76HglJSrEExVygvZm1MbOqwDBgZvQKUR9EAwwieNMPtqkcPG4FnAKsCZYbBT9bAhcBzwfbzwRGBo9HAq8cdq+Owk3fa8/O/CJdrS1l+sf8HIb+5UP2FhQzbXTfyMw5fR4hSarcP3/cvcjMxgFvAmnAZHfPNrN7gUx3nwmMM7NzgUJgG9+80Z8BjDezQqAEuNHdNwfPvWRm9YNtxrr7tqD9d8CLZnYN8CXwwwrpaYw6N6vNwM4nMWnWakae3pp66VWP58tLnCsoKuFXry7hmdlf0KdNPR65vDuNaukiOklu5p74d07NyMjwzMzMCtvf8o27+P7D73PtmW258/xTK2y/ktjWb8/jxmfnsWDtdkaf1Zaff/8UKqel/DWrksDMLMvdM8pbT7/lB9G+cS2GdG/G1I/WsH57XtjlSBz4cMVmLnhkFis27eaxK3pw5/mnKiQkZeg3/RBuPe87OPDHf38edikSopISZ8I7K/jRpDnUT6/KK+P6M1BTXyXFKCgOoXndGlx9emtmzM8he73uLJuKduRFpr7+4c1lDDqtKS+P7U873flVUpCCogw3/s/J1K5ehd+8vpRk+CxHYrd0w04GPzqLd5dt4pc/6Mifh3XT1FdJWQqKMtSuXoVbvteeD1ds4c1sfQteqpgxLzL1Na8wMvX16v6a+iqpTUFRjhF9W3FK41r8+rUl5BcWh12OHEP7ioq56+VF3PriQro2r8OrPz6TjNb1wi5LJHQKinJUTqvE3Rd2ImdbHo+/tzLscuQYWb89j8v+Opu/zf6S689qy7PX9qFhrRPCLkskLigoYtCvXX0GndaEx95dydqt+nKjZDNr+TdTXx8f0YM7NPVV5Fv0vyFGdw06lcqVjDv/sUgfbCeJ0qmvV06eQ4OakamvAzpr6qvI/hQUMWpSuzrjB3bgg+WbmZ6VE3Y5cpSip75ecFpT/nGjpr6KHIqC4jBc0acVvVrX5devLSV3l74JL1Et3bCTC4Opr3f/oCN/0tRXkTIpKA5DpUrG7y4+jbzCYu6emR12OXIEXsqKTH3NLyzmhev7cpWmvoqUS0FxmNo1rMnN32vPa4s28OqnZX0th8ST0qmvP/37Qrq1iEx97dlKU19FYqHz7SMw+qy2/GfpRu6YsYiuzevQol6NsEuSMqzfnscNz85j4drtXP/dtvzsf3XXV5HDof8tR6BKWiX+PKw7ONw8bT5FxSVhlySHUDr1deWm3Tw+oid3DNTUV5HDpf8xR6hFvRr85qIuzPtyO396e3n5G8hxtf/U15nj+jOg80lhlyWSkDT0dBR+0LUpHyzP5dF3VnB6uwb0a1c/7JIEWJm7m1++ks2sFZsZ3K0pv72oCzWq6ldd5EjpjOIo3X1hJ9o0SOeWF+azaWd+2OWktD37ivjdG58x4OH3WZiznfuGdubhy7opJESOkoLiKNWoWplHh/dgV34R1z2dSV6Bbhx4vLk7r326gXMffI/H31vJ4G7NeOe2s7miTytNfRWpAAqKCtCx6Yn8aVh3Pl23g5/+fQElJbrFx/GyYtMuRkyaw9jn5lG3RlVeuqEfD/ywKw1q6oZ+IhVF5+QV5LyOjblz4Knc9/pSHqi/jJ8P6BB2SUlt974iHnl7OZNmraZG1TR+NbgTl/dpRVolnUGIVDQFRQW69sw2rNq8m7+8u5I2DdL5YUaLsEtKOu7OPz/dwH2vLWHjzn1cmtGc2wd0oL7OIESOGQVFBTIz7h3cmS+37uXOfyyiRb0a9G2rmVAVZfnGXfzilWw+XrWFzs1O5LERPenRsm7YZYkkPX1GUcGqpFXiL1f0pGW9Glw3NZOsL7aGXVLC272viPteW8LAP33Akg07+dWQzrwy9gyFhMhxElNQmNkAM1tmZivMbPxBnh9jZovMbIGZzTKzjkF776BtgZktNLOhUdv8xMyyzWyxmT1vZtWC9ilmtjpqu24V1dnjpXb1KjxzTR8a1DqBH036hI9WbA67pITk7ryyYB3nPPAuT3ywmkt6Nue/P/0uP+qrzyJEjicr70t4zCwN+Bw4D8gB5gLD3X1J1DonuvvO4PGFwI3uPsDMagAF7l5kZk2AhUBToDEwC+jo7nlm9iLwurtPMbMpwKvuPj3WTmRkZHhmZmbsvT5ONu3K50dPfsLqLXt4fEQPzunQOOySEsayr3bxi1cWM2f1Vro0q829gzvRXWcQIhXKzLLcPaO89WI5o+gNrHD3Ve5eAEwDBkevUBoSgXTAg/a97l4UtFcrbQ9UBqqbWWWgBpB0t2JtVKsa00b35ZTGtRj9dBavfboh7JLi3q78Qn716hLO//MHLNu4i/uGdublsf0VEiIhiiUomgFro5ZzgrZvMbOxZrYSuB+4Kaq9j5llA4uAMe5e5O7rgAeAL4ENwA53/3fU7u4zs0/N7CEzS+jpLHXTq/LsdX3o3rIOP35+nr4d7xDcnZfnr+OcP77H5A9Xc2lGc/7708hFcxpmEglXLEFxsP+lB4xXufsEd28H3A7cFdU+x907Ab2AO8ysmpnVJXJW0obIUFS6mY0INrkD6BCsXy/Y34FFmY02s0wzy8zNzY2hG+E5sVoVpo7qzentGnDb3xcy5cPV+t7tKJ99tZPLJs7mlhcW0KR2NV6+sT+/veg06qVXDbs0ESG2oMgBoi8IaE7Zw0TTgCH7N7r7UmAP0Bk4F1jt7rnuXgjMAE4P1tvgEfuAp4gMfR3A3Se6e4a7ZzRs2DCGboQ4z/86AAAINUlEQVSrRtXKPDkyg3NPbczd/1zCuOfns31vQdhlhWpnfiH3/DObQX+execbd/GboV34x4396dqiTtiliUiUWK6jmAu0N7M2wDpgGHB59Apm1t7dS++1PQhYHrS3AdYGH2a3Ak4B1gBpQN/gw+484HtAZrBNE3ffYJGb9AwBFh9dF+NHtSpp/PVHPfnr+yt58N+fk7VmG3+8tCv9T24QdmnHlbszY946fvvGZ2zZs4/hvVvys/89hbo6gxCJS+UGRfAmPw54k8gb/GR3zzaze4FMd58JjDOzc4FCYBswMtj8DGC8mRUCJURmQ20GNpvZdGAeUATMByYG2zxrZg2JDHktAMZUUF/jQlol48azT+as9g25edp8rnhyDtee0Ybbvn8K1aqkhV3eMfXVjnxmzM9helYOq3L30LVFHSZflcFpzXUGIRLPyp0emwjidXpsefIKivntG0t5+uMv6HBSLR4e1o0OJ50YdlkVKr+wmH8v2cj0rBxmLc+lxKFX67oM792SId2aUUkfVIuEJtbpsQqKOPDOZ5v42fRP2ZlXyM8HnMKo/m0S+g3U3Zm/djvTs3L458L17Movolmd6lzcoxkX9WhO6wbpYZcoIigoEs6W3fsYP2MRby3ZSMcmJ3LNGW24oGsTTqicOMNR+w8tVatSifM7N+GSns3p27Z+QoefSDJSUCQgd+cf89fx2LsrWb5pNw1qnsCIvi25ok8rGtaKz8tJ8guLeTP7q8jQ0orNuEPv1vW4pGdzBnY5iVrVqoRdoogcgoIigbk7s1Zs5qkP1/DfzzZRNa0SF3Rtwqj+bejcrHbY5eHuzPsyMrT06sL17NqnoSWRRBRrUOg243HIzDizfUPObN+QVbm7mfrRGv6elcOMeevo3boeV/dvzXkdG1M57fje/HfDjjxmzFvHS1k5rNq8h+pV0hjY5aTI0FIbDS2JJCudUSSIHXmF/D1zLVM+WkPOtjya1alO7zb1aNcwnXYNa3Jyo5q0qp9O1cpHFx7uzpY9Bazfnse6bXms257H+u35fPbVTj5etSUytNQmMrR0fpcm1DxBf2uIJCoNPSWp4hLnP0s38uLctXz21S7Wbc/7+rm0SkbLejW+Do92DWvSrlHkcZ0akYvZ8guL2bAjPxIE2/O+DoT1OyKBsG57HgVFJd96zepV0mhZrwbf73wSF/doRqv6GloSSQYKihSxZ18RqzfvYWXublZu2s3K3MjjVZv3fOsNv356VcyMzbv3fWt7M2hU6wSa1qlO0zrVaVanOk1rV4s8rhtZrl29CpEL5UUkmegzihSRfkJlOjerfcCH3MUlTs62vUGARMIDiARB8K953eo0PrHaUQ9XiUhyU1AkqbRKRqv66bSqn845HcKuRkQSmf6UFBGRMikoRESkTAoKEREpk4JCRETKpKAQEZEyKShERKRMCgoRESmTgkJERMqUFLfwMLNc4Isj3LwBsLkCy0kE6nNqUJ9Tw9H0uZW7NyxvpaQIiqNhZpmx3OskmajPqUF9Tg3Ho88aehIRkTIpKEREpEwKCpgYdgEhUJ9Tg/qcGo55n1P+MwoRESmbzihERKRMKR0UZjbAzJaZ2QozGx92PRXNzFqY2TtmttTMss3s5qC9npm9ZWbLg591w661oplZmpnNN7NXg+U2ZjYn6PMLZlY17BorkpnVMbPpZvZZcLz7JftxNrOfBL/Xi83seTOrlmzH2cwmm9kmM1sc1XbQ42oRfw7ezz41sx4VVUfKBoWZpQETgIFAR2C4mXUMt6oKVwT81N1PBfoCY4M+jgfedvf2wNvBcrK5GVgatfx74KGgz9uAa0Kp6tj5E/Avd+8AdCXS96Q9zmbWDLgJyHD3zkAaMIzkO85TgAH7tR3quA4E2gf/RgOPVVQRKRsUQG9ghbuvcvcCYBowOOSaKpS7b3D3ecHjXUTePJoR6efUYLWpwJBwKjw2zKw5MAh4Mlg24BxgerBKUvXZzE4EzgImAbh7gbtvJ8mPM5Fv6KxuZpWBGsAGkuw4u/v7wNb9mg91XAcDT3vEbKCOmTWpiDpSOSiaAWujlnOCtqRkZq2B7sAcoLG7b4BImACNwqvsmHgY+DlQEizXB7a7e1GwnGzHui2QCzwVDLc9aWbpJPFxdvd1wAPAl0QCYgeQRXIf51KHOq7H7D0tlYPCDtKWlFPAzKwm8BJwi7vvDLueY8nMLgA2uXtWdPNBVk2mY10Z6AE85u7dgT0k0TDTwQTj8oOBNkBTIJ3I0Mv+kuk4l+eY/Z6nclDkAC2ilpsD60Oq5ZgxsypEQuJZd58RNG8sPSUNfm4Kq75joD9woZmtITKceA6RM4w6wRAFJN+xzgFy3H1OsDydSHAk83E+F1jt7rnuXgjMAE4nuY9zqUMd12P2npbKQTEXaB/MkqhK5IOwmSHXVKGCsflJwFJ3fzDqqZnAyODxSOCV413bseLud7h7c3dvTeSY/tfdrwDeAS4JVku2Pn8FrDWzU4Km7wFLSOLjTGTIqa+Z1Qh+z0v7nLTHOcqhjutM4Mpg9lNfYEfpENXRSukL7szsfCJ/baYBk939vpBLqlBmdgbwAbCIb8br7yTyOcWLQEsi/+F+6O77f2CW8MzsbOA2d7/AzNoSOcOoB8wHRrj7vjDrq0hm1o3Ih/dVgVXA1UT+EEza42xm9wCXEZndNx+4lsiYfNIcZzN7HjibyB1iNwK/BF7mIMc1CMxHicyS2gtc7e6ZFVJHKgeFiIiUL5WHnkREJAYKChERKZOCQkREyqSgEBGRMikoRESkTAoKEREpk4JCRETKpKAQEZEy/X+B0SzqvwZUcgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22e0bf3b6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(params,test_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import AdaBoostRegressor\n",
    "from sklearn.ensemble import BaggingRegressor\n",
    "\n",
    "ridge = Ridge(20)\n",
    "\n",
    "params = [2,3,4,5,10, 15, 20, 25, 30, 35, 40, 45, 50]\n",
    "test_scores = []\n",
    "for param in params:\n",
    "    model = AdaBoostRegressor(n_estimators=param, base_estimator=ridge)\n",
    "    #model = BaggingRegressor(n_estimators=param, base_estimator=ridge)\n",
    "    test_score = np.sqrt(-cross_val_score(model,x_train,y_train,cv=10,scoring=\"neg_mean_squared_error\"))\n",
    "    test_scores.append(np.mean(test_score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x22e0c160f60>]"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22e0c2cf780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(params,test_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = AdaBoostRegressor(n_estimators=2,base_estimator=Ridge(20))\n",
    "model.fit(x_train,y_train)\n",
    "y_hat = model.predict(x_test)\n",
    "np.savetxt(\"zhengqi_predict.txt\", y_hat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBRegressor\n",
    "\n",
    "params = [1,2,3,4,5,6,7]\n",
    "test_scores = []\n",
    "for param in params:\n",
    "    model = XGBRegressor(max_depth=param)\n",
    "    test_score = np.sqrt(-cross_val_score(model,x_train,y_train,cv=10,scoring=\"neg_mean_squared_error\"))\n",
    "    test_scores.append(np.mean(test_score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x22e0be43588>]"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22e0bd98b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(params,test_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据降维"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.21222655 0.1460031  0.09564328 0.06834441 0.05663881 0.05104112]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "pca = PCA(n_components=6)\n",
    "x_train_pca = pca.fit_transform(x_train)\n",
    "print(pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 3.25384789, -1.87391003,  3.13892602,  3.90790219,  2.21940876,\n",
       "        -5.51656117],\n",
       "       [ 0.62516903, -1.6248776 ,  0.41878687,  2.43486367,  1.20070248,\n",
       "         0.17661505],\n",
       "       [ 0.08881732, -1.01876847,  1.28440064,  1.77414563,  0.87047369,\n",
       "         0.47168081],\n",
       "       ...,\n",
       "       [ 0.65949835,  0.32601152,  0.01863326, -1.82265155, -2.24552211,\n",
       "         0.28616192],\n",
       "       [ 0.63446194, -0.24539321, -0.83876672, -1.1979511 , -2.84223442,\n",
       "        -0.70935952],\n",
       "       [ 0.0397529 , -0.44026837,  0.13515342, -1.48893277, -2.03472738,\n",
       "        -0.98943696]])"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_pca"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [],
   "source": [
    "ridge = Ridge(20)\n",
    "\n",
    "params = [2,3,4,5,10, 15, 20, 25, 30, 35, 40, 45, 50]\n",
    "test_scores = []\n",
    "for param in params:\n",
    "    model = AdaBoostRegressor(n_estimators=param, base_estimator=ridge)\n",
    "    #model = BaggingRegressor(n_estimators=param, base_estimator=ridge)\n",
    "    test_score = np.sqrt(-cross_val_score(model,x_train,y_train,cv=10,scoring=\"neg_mean_squared_error\"))\n",
    "    test_scores.append(np.mean(test_score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x22e0c7e6c50>]"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22e0c710550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(params,test_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
